SensorTagとRaspberry Pi 2を接続し、スクリプトで情報を取得する
はじめに
SensorTagとRaspberry Pi 2をBLE接続して、Raspberry Pi内でスクリプトを実行して情報を取得してみました。今回取得できた情報は以下のようになります。
- Temp: 温度
- Humidity: 湿度
- Barometer: 気圧
- Accelerometer: 加速度
- Magnetometer: 磁力
- Gyroscope: ジャイロスコープ(傾き)
- Light: 光量
SensorTag
SensorTagについては特に難しいことはなく、電池を入れるのみです。緑色の点滅が光れば準備完了だと思います。
Raspberry Pi 2
次にRaspberry Pi 2の準備です。Raspberry Pi 2と書きましたが、大体の手順やその他のRaspberry Piと共通するかと思います。Raspberry Pi 2には以下が既にインストール・接続済みのものとします(私はOSをインストールした時点でこれらも設定されていた)。
- OS
- BLEのアダプタ・ライブラリ
- Python(今回は2.7.9を使用)
- git
1.SSH接続
SSH接続は必須ではありませんが、PC上でターミナルを操作出来た方が便利なので行います。Raspberry Pi 2を直接操作する方は飛ばしても構いません。
Raspberry Pi 2に接続したキーボードより以下のコマンドを入力し、IPを取得します。
$ ifconfig eth0
IPが分かれば、PCよりSSH接続するだけです。(以下の例はユーザ名が「pi」の場合です)
$ ssh pi@xxx.xxx.xxx(上記で取得したIP)
2.スクリプトの準備
SensorTagよりデータを取得するスクリプトの準備です。今回は既に公開されているスクリプトを実行します。Raspberry Pi 2で以下のコマンドを実行して取得します。
$ git clone https://github.com/IanHarvey/bluepy.git
この後で実行するスクリプトですが、そのまま実行するとimport処理でエラーとなりました。なのでエラーとなった箇所を修正します。対象のソースは「bluepy/bluepy/sensortag.py」で、以下のように1行目をコメントアウトして、2行目のようにします。
#from .btle import UUID, Peripheral, DefaultDelegate from btle import UUID, Peripheral, DefaultDelegate
スクリプトの実行 - SensorTagの情報を取得
ではスクリプトを実行し、SensorTagの情報を取得します。まずはRaspberry Pi 2でSensorTagのアドレスを取得します。
$ sudo hcitool lescan LE Scan ... xx:xx:xx:xx:xx:xx (unknown) xx:xx:xx:xx:xx:xx CC2650 SensorTag xx:xx:xx:xx:xx:xx (unknown) xx:xx:xx:xx:xx:xx CC2650 SensorTag
「CC2650 SensorTag」と表示されてアドレスが出てくると思います。
先ほど修正したスクリプトを実行します。パラメータとして、取得したアドレスを渡します。
$ cd bluepy/bluepy $ python sensortag.py --all SensorTagのアドレス Connecting to xx:xx:xx:xx:xx:xx ('Temp: ', (28.65625, 23.375)) ('Humidity: ', (28.57208251953125, 85.406494140625)) ('Barometer: ', (28.94, 1006.9)) ('Accelerometer: ', (0.019287109375, 0.039306640625, 0.927490234375)) ('Magnetometer: ', (5.097924297924298, 27.588766788766787, 203.61709401709402)) ('Gyroscope: ', (0.57220458984375, 0.18310546875, 1.86920166015625)) ('Light: ', 151.52)
最初に上げた項目を取得することができました。
まとめ
Raspberry Pi 2でスクリプトを実行しSensorTagからの値を取得することができました。値が取得できれば、後はAWSへ送信するなど色々と遊べるかと思います。引き続き、色々とやってみようと思います。